﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections.ObjectModel;
using System.Data;
using System.Collections;

namespace DataBase.Tareas
{
    public class BDTareas
    {
        static string cadena = @"Data Source=.\SQLEXPRESS;Initial Catalog=JCI;Integrated Security=True";
        public static bool CrearTarea(Model.Tareas.Tarea tarea)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                cmd.CommandText = "Insert Into Tarea (Nombre, Descripcion,fecIni,fecFin,Porcentaje,Estado,CI,CIasignado) Values (@nombre, @descripcion,@fi,@ff,@p,@e,@ci,@ciasignado)";
                cmd.Parameters.AddWithValue("nombre", tarea.nombre);
                cmd.Parameters.AddWithValue("descripcion", tarea.descripcion);
                cmd.Parameters.AddWithValue("fi", tarea.fecini);
                cmd.Parameters.AddWithValue("ff", tarea.fecfin);
                cmd.Parameters.AddWithValue("p", tarea.porcentaje);
                cmd.Parameters.AddWithValue("e",Convert.ToInt32( tarea.estado));
                cmd.Parameters.AddWithValue("ci",Convert.ToInt64( tarea.ci));
                cmd.Parameters.AddWithValue("ciasignado", Convert.ToInt64(tarea.ciAsignado));
                canal.Open();
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static System.Collections.ObjectModel.Collection<Model.Programa> DevolverSusProgrmas(long p,int ges)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(cadena);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT * FROM [PROGRAMA] WHERE CIDirectora=@c ";
                cmd.Parameters.AddWithValue("c", p);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }

                Collection<Model.Programa> list = new Collection<Model.Programa>();

                while (reader.Read())
                {
                    Model.Programa programa = new Model.Programa();
                    programa.CodigoPrograma = Int64.Parse(reader["CodigoPrograma"].ToString());
                    programa.Area = reader["Area"].ToString();
                    programa.CIDirectora = Int64.Parse(reader["CIDirectora"].ToString());
                    programa.Estado = bool.Parse(reader["Estado"].ToString());
                    programa.FechaFin = DateTime.Parse(reader["FechaFin"].ToString());
                    programa.FechaInicio = DateTime.Parse(reader["FechaInicio"].ToString());
                    programa.Nombre = reader["Nombre"].ToString();
                    if(programa.FechaInicio.Year==ges)
                        list.Add(programa);
                }
                return list;
            }
            catch (SqlException ex)
            {
                throw new Exception("Error al obtener programa", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }

        public static bool CrearTareaPrograma(Model.Tareas.Tarea tarea)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                cmd.CommandText = "Insert Into TareaAPrograma (Nombre, Descripcion,fecIni,fecFin,Porcentaje,Estado,CI,CIasignado,Codprograma) Values (@nombre, @descripcion,@fi,@ff,@p,@e,@ci,@ciasignado,@cod)";
                cmd.Parameters.AddWithValue("nombre", tarea.nombre);
                cmd.Parameters.AddWithValue("descripcion", tarea.descripcion);
                cmd.Parameters.AddWithValue("fi", tarea.fecini);
                cmd.Parameters.AddWithValue("ff", tarea.fecfin);
                cmd.Parameters.AddWithValue("p", tarea.porcentaje);
                cmd.Parameters.AddWithValue("e", Convert.ToInt32(tarea.estado));
                cmd.Parameters.AddWithValue("ci", Convert.ToInt64(tarea.ci));
                cmd.Parameters.AddWithValue("ciasignado", Convert.ToInt64(tarea.ciAsignado));
                cmd.Parameters.AddWithValue("cod",Convert.ToInt64(tarea.programa));
                canal.Open();
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Collection<Model.Tareas.Tare> GetTareas(string nom, string gestion, bool todos, bool abiertos, bool cerrados)
        {
            try
            {
                Collection<Model.Tareas.Tare> tar;            
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();                
                if (todos)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE Nombre LIKE @nom +'%'  and DatePart(YEAR, Tarea.fecIni)=@gestion ";
                if (abiertos)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE Nombre LIKE @nom +'%' and DatePart(YEAR, Tarea.fecIni)=@gestion and Estado=0 ";    
                if (cerrados)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE Nombre LIKE @nom +'%' and DatePart(YEAR, Tarea.fecIni)=@gestion and Estado=1 ";
                cmd.Parameters.AddWithValue("nom", nom);
                cmd.Parameters.AddWithValue("gestion",gestion);
                canal.Open();
                SqlDataReader reader = cmd.ExecuteReader();              
                tar = new Collection<Model.Tareas.Tare>();
                while (reader.Read())
                {
                    if (reader.HasRows)
                    {
                        Model.Tareas.Tare t = new Model.Tareas.Tare();
                        t.ID = Convert.ToInt64(reader["CodTarea"]);
                        t.Nombre = reader["Nombre"].ToString();
                        t.FechaInicio = DateTime.Parse(reader["fecIni"].ToString());                        
                        t.FechaFin = DateTime.Parse(reader["fecFin"].ToString());                        
                        t.Estado = Convert.ToBoolean( reader["Estado"]);
                        if (t.Estado)
                            t.EstadoTexto = "Cerrado";
                        else
                            t.EstadoTexto = "Abierto";
                        tar.Add(t);
                    }
                }

                return tar;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static object GetTareasGestion(string i, string f, bool todos, bool abiertos, bool cerrados)
        {
            try
            {
                Collection<Model.Tareas.Tare> tar;
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                if (todos)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE DatePart(YEAR, Tarea.fecIni)>=@inicio and DatePart(YEAR, Tarea.fecIni)<=@fin ";
                if (abiertos)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE DatePart(YEAR, Tarea.fecIni)>=@inicio and DatePart(YEAR, Tarea.fecIni)<=@fin and Estado=0 ";
                if (cerrados)
                    cmd.CommandText = "SELECT CodTarea,Nombre,fecIni,fecFin,Estado FROM [Tarea] WHERE DatePart(YEAR, Tarea.fecIni)>=@inicio and DatePart(YEAR, Tarea.fecIni)<=@fin and Estado=1 ";
                cmd.Parameters.AddWithValue("inicio", i);
                cmd.Parameters.AddWithValue("fin", f);
                canal.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                tar = new Collection<Model.Tareas.Tare>();
                while (reader.Read())
                {
                    if (reader.HasRows)
                    {
                        Model.Tareas.Tare t = new Model.Tareas.Tare();
                        t.ID = Convert.ToInt64(reader["CodTarea"]);
                        t.Nombre = reader["Nombre"].ToString();
                        t.FechaInicio = DateTime.Parse(reader["fecIni"].ToString());
                        t.FechaFin = DateTime.Parse(reader["fecFin"].ToString());
                        t.Estado = Convert.ToBoolean(reader["Estado"]);
                        if (t.Estado)
                            t.EstadoTexto = "Cerrado";
                        else
                            t.EstadoTexto = "Abierto";
                        tar.Add(t);
                    }
                }

                return tar;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Collection<Model.Tareas.Tare> GetGestionEspecifica(string programa,string ges, bool todos, bool abiertos, bool cerrados)
        {
            try
            {
                Collection<Model.Tareas.Tare> tar;
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                if (todos)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)=@gestion and Programa.Nombre=@programa";
                if (abiertos)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)=@gestion and TareaAPrograma.Estado=0 and Programa.Nombre=@programa";
                if (cerrados)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)=@gestion and TareaAPrograma.Estado=1 and Programa.Nombre=@programa";
                cmd.Parameters.AddWithValue("gestion", ges);
                cmd.Parameters.AddWithValue("programa", programa);  
                canal.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                tar = new Collection<Model.Tareas.Tare>();
                while (reader.Read())
                {
                    if (reader.HasRows)
                    {
                        Model.Tareas.Tare t = new Model.Tareas.Tare();
                        t.ID = Convert.ToInt64(reader["CodTarea"]);
                        t.Nombre = reader["Nombre"].ToString();
                        t.FechaInicio = DateTime.Parse(reader["fecIni"].ToString());
                        t.FechaFin = DateTime.Parse(reader["fecFin"].ToString());
                        t.Estado = Convert.ToBoolean(reader["Estado"]);
                        if (t.Estado)
                            t.EstadoTexto = "Cerrado";
                        else
                            t.EstadoTexto = "Abierto";
                        tar.Add(t);
                    }
                }

                return tar;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static object GetRangoAProgramas(string programa, string inicio, string fin, bool todos, bool abiertos, bool cerrados)
        {
            try
            {
             Collection<Model.Tareas.Tare> tar;
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                if (todos)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)>=@ini and DatePart(YEAR, TareaAPrograma.fecIni)<=@fin and Programa.Nombre=@programa";
                if (abiertos)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)>=@ini and DatePart(YEAR, TareaAPrograma.fecIni)<=@fin and TareaAPrograma.Estado=0 and Programa.Nombre=@programa";
                if (cerrados)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma],[Programa] WHERE Programa.CodigoPrograma = TareaAPrograma.Codprograma and DatePart(YEAR, TareaAPrograma.fecIni)>=@ini and DatePart(YEAR, TareaAPrograma.fecIni)<=@fin and TareaAPrograma.Estado=1 and Programa.Nombre=@programa";
                cmd.Parameters.AddWithValue("ini", inicio);
                cmd.Parameters.AddWithValue("fin",fin);
                cmd.Parameters.AddWithValue("programa", programa);  
                canal.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                tar = new Collection<Model.Tareas.Tare>();
                while (reader.Read())
                {
                    if (reader.HasRows)
                    {
                        Model.Tareas.Tare t = new Model.Tareas.Tare();
                        t.ID = Convert.ToInt64(reader["CodTarea"]);
                        t.Nombre = reader["Nombre"].ToString();
                        t.FechaInicio = DateTime.Parse(reader["fecIni"].ToString());
                        t.FechaFin = DateTime.Parse(reader["fecFin"].ToString());
                        t.Estado = Convert.ToBoolean(reader["Estado"]);
                        if (t.Estado)
                            t.EstadoTexto = "Cerrado";
                        else
                            t.EstadoTexto = "Abierto";
                        tar.Add(t);
                    }
                }
                canal.Close();
                return tar;
            }
            catch (Exception ex)
            {
                throw ex;
            }            
        }

        public static void CerrarTarea(int id)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [Tarea] Set Estado='1' Where CodTarea=@id";
                comando.Parameters.AddWithValue("id", id);
                canal.Open();
                comando.ExecuteNonQuery();
                canal.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void CerrarTareaPrograma(int id)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [TareaAPrograma] Set Estado='1' Where CodTarea=@id";
                comando.Parameters.AddWithValue("id", id);
                canal.Open();
                comando.ExecuteNonQuery();
                canal.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Model.Tareas.Tarea DevolverTareaPorId(string id, bool relacionado)
        {
            try
            {
                Model.Tareas.Tarea tarea = new Model.Tareas.Tarea();
                SqlConnection conexion = new SqlConnection(cadena);
                SqlCommand cmd = conexion.CreateCommand();
                if (relacionado)
                    cmd.CommandText = "SELECT Nombre,Descripcion,fecIni,fecFin,CIAsignado,CodPrograma FROM TareaAPrograma WHERE CodTarea=@codigo";
                else
                    cmd.CommandText = "SELECT Nombre,Descripcion,fecIni,fecFin,CIAsignado FROM Tarea WHERE CodTarea=@codigo";
                cmd.Parameters.AddWithValue("codigo", id);
                conexion.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (relacionado)
                {
                    while (reader.Read())
                    {
                        if (reader.HasRows)
                        {
                            tarea.nombre = reader["Nombre"].ToString();
                            tarea.descripcion = reader["Descripcion"].ToString();
                            tarea.fecini = DateTime.Parse(reader["fecIni"].ToString());
                            tarea.fecfin = DateTime.Parse(reader["fecFin"].ToString());
                            tarea.ciAsignado = reader["CIAsignado"].ToString();
                            tarea.programa = reader["CodPrograma"].ToString();
                        }
                    }
                }
                else
                {
                    while (reader.Read())
                    {
                        if (reader.HasRows)
                        {
                            tarea.nombre = reader["Nombre"].ToString();
                            tarea.descripcion = reader["Descripcion"].ToString();
                            tarea.fecini = DateTime.Parse(reader["fecIni"].ToString());
                            tarea.fecfin = DateTime.Parse(reader["fecFin"].ToString());
                            tarea.ciAsignado = reader["CIAsignado"].ToString();
                        }
                    }
                }             
                return tarea;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static bool modificarTarea(string id, string nombre, string descripcion, DateTime feci, DateTime fecf, Int64 ciasignado, Int64 codprograma, bool relacionado)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand comando = canal.CreateCommand();
                if (relacionado)
                    comando.CommandText = "Update [TareaAPrograma] Set  Nombre=@nom,Descripcion=@des,fecIni=@feci,fecFin=@fecf,CIAsignado=@ciasignado,Codprograma=@codprograma Where CodTarea=@id";
                else
                    comando.CommandText = "Update [Tarea] Set Nombre=@nom,Descripcion=@des,fecIni=@feci,fecFin=@fecf,CIAsignado=@ciasignado Where CodTarea=@id";
                comando.Parameters.AddWithValue("id", id);
                comando.Parameters.AddWithValue("nom", nombre);
                comando.Parameters.AddWithValue("des", descripcion);
                comando.Parameters.AddWithValue("feci", feci);
                comando.Parameters.AddWithValue("fecf", fecf);
                comando.Parameters.AddWithValue("ciasignado", ciasignado);
                comando.Parameters.AddWithValue("codprograma", codprograma);
                canal.Open();
                comando.ExecuteNonQuery();
                canal.Close();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }           
        }

        public static bool ElminarTarea(string id, bool relacionado)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand comando = canal.CreateCommand();
                if (relacionado)
                    comando.CommandText = "Delete From Tarea Where CodTarea=@id";
                else
                    comando.CommandText = "Delete From TareaAPrograma Where CodTarea=@id";
                comando.Parameters.AddWithValue("id", id);                
                canal.Open();
                comando.ExecuteNonQuery();
                canal.Close();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static bool GuardarEvaluacion(long id, bool relacionado, int evaluacion)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand comando = canal.CreateCommand();
                if (relacionado)
                    comando.CommandText = "Update [TareaAPrograma] Set Porcentaje=@evalu Where CodTarea=@id";
                else
                    comando.CommandText = "Update [Tarea] Set Porcentaje=@evalu Where CodTarea=@id";
                comando.Parameters.AddWithValue("id", id);
                comando.Parameters.AddWithValue("evalu",evaluacion);
                canal.Open();
                comando.ExecuteNonQuery();
                canal.Close();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }         
        }

        public static Model.Tareas.Tarea GetTareas(string id, bool relacionado)
        {
            try
            {
                Model.Tareas.Tarea tarea = new Model.Tareas.Tarea();
                SqlConnection conexion = new SqlConnection(cadena);
                SqlCommand cmd = conexion.CreateCommand();
                if (relacionado)
                    cmd.CommandText = "SELECT Nombre,Descripcion,fecIni,fecFin,CIAsignado,CodPrograma,Porcentaje,Estado FROM TareaAPrograma WHERE CodTarea=@codigo";
                else
                    cmd.CommandText = "SELECT Nombre,Descripcion,fecIni,fecFin,CIAsignado,Porcentaje,Estado FROM Tarea WHERE CodTarea=@codigo";
                cmd.Parameters.AddWithValue("codigo", id);
                conexion.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (relacionado)
                {
                    while (reader.Read())
                    {
                        if (reader.HasRows)
                        {
                            tarea.nombre = reader["Nombre"].ToString();
                            tarea.descripcion = reader["Descripcion"].ToString();
                            tarea.fecini = DateTime.Parse(reader["fecIni"].ToString());
                            tarea.fecfin = DateTime.Parse(reader["fecFin"].ToString());
                            tarea.ciAsignado = reader["CIAsignado"].ToString();
                            tarea.programa = reader["CodPrograma"].ToString();
                            tarea.porcentaje =Convert.ToInt32( reader["Porcentaje"].ToString());
                            string est = reader["Estado"].ToString();
                            if (est == "0")
                                tarea.estado = false;
                            else
                                tarea.estado = true;
                        }
                    }
                }
                else
                {
                    while (reader.Read())
                    {
                        if (reader.HasRows)
                        {
                            tarea.nombre = reader["Nombre"].ToString();
                            tarea.descripcion = reader["Descripcion"].ToString();
                            tarea.fecini = DateTime.Parse(reader["fecIni"].ToString());
                            tarea.fecfin = DateTime.Parse(reader["fecFin"].ToString());
                            tarea.ciAsignado = reader["CIAsignado"].ToString();
                            tarea.porcentaje = Convert.ToInt32(reader["Porcentaje"].ToString());
                            string est=reader["Estado"].ToString();
                            if (est=="0")
                                tarea.estado = false;
                            else
                                tarea.estado = true;
                        }
                    }
                }
                return tarea;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Collection<Model.Tareas.Tare>  Pendientes(string ci, int gestion, bool relacionado)
        {
            try
            {
                Collection<Model.Tareas.Tare> tar;
                SqlConnection canal = new SqlConnection(cadena);
                SqlCommand cmd = canal.CreateCommand();
                if (relacionado)
                    cmd.CommandText = "SELECT TareaAPrograma.CodTarea,TareaAPrograma.Nombre,TareaAPrograma.fecIni,TareaAPrograma.fecFin,TareaAPrograma.Estado FROM [TareaAPrograma] WHERE CIAsignado=@ci and DatePart(YEAR, fecIni)=@gestion and Estado=0 ";
                else
                    cmd.CommandText = "SELECT Tarea.CodTarea,Tarea.Nombre,Tarea.fecIni,Tarea.fecFin,Tarea.Estado FROM [Tarea] WHERE CIAsignado=@ci and DatePart(YEAR, fecIni)=@gestion and Estado=0";                
                cmd.Parameters.AddWithValue("ci", ci);
                cmd.Parameters.AddWithValue("gestion",gestion);                
                canal.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                tar = new Collection<Model.Tareas.Tare>();
                while (reader.Read())
                {
                    if (reader.HasRows)
                    {
                        Model.Tareas.Tare t = new Model.Tareas.Tare();
                        t.ID = Convert.ToInt64(reader["CodTarea"]);
                        t.Nombre = reader["Nombre"].ToString();
                        t.FechaInicio = DateTime.Parse(reader["fecIni"].ToString());
                        t.FechaFin = DateTime.Parse(reader["fecFin"].ToString());
                        t.Estado = Convert.ToBoolean(reader["Estado"]);
                        if (t.Estado)
                            t.EstadoTexto = "Cerrado";
                        else
                            t.EstadoTexto = "Abierto";
                        tar.Add(t);
                    }
                }
                canal.Close();
                return tar;
            }
            catch (Exception ex)
            {
                throw ex;
            }        
        }

        public static ICollection reportes(long ci, int gestion)
        {
            try
            {
                SqlConnection canal = new SqlConnection(cadena);
                SqlDataAdapter comando = new SqlDataAdapter();
                comando.SelectCommand = new SqlCommand("Select Porcentaje,Nombre from [Tarea] where DatePart(YEAR, fecIni)=@gestion and CIAsignado=@ci and Estado=1", canal);
                comando.SelectCommand.Parameters.AddWithValue("gestion", gestion);
                comando.SelectCommand.Parameters.AddWithValue("ci", ci);

                canal.Open();
                DataTable table = new DataTable();
                table.Columns.Add(new DataColumn("Porcentaje", typeof(int)));
                table.Columns.Add(new DataColumn("Nombre", typeof(string)));

                comando.Fill(table);
                DataView dv = new DataView(table);
                return dv;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        
        }
    }
}
